import axios from "axios";
import Vue from 'vue';
import router from "@/router";
import Cookies from 'js-cookie' //引入cookie模块
// import Book from '@/utils/Base64.js'
// Vue.prototype.$Cookies = Cookies //将它放入vue的原型里

const instance = axios.create({ //-----------创建新的axios实例
	baseURL: 'http://192.168.1.54:8080/admin',
	timeout: 5000 //请求超时的间隔
});

// 2.拦截器的配置
// 2.1 请求拦截
// 添加请求拦截器  记得return
instance.interceptors.request.use(config => {
	// 在发送请求之前做些什么
	// 给每个请求添加token
	config.headers['X-Litemall-Admin-Token'] = Cookies.get('token');
	return config;
}, error => {
	// 对请求错误做些什么
	return Promise.reject(error);
});
// 2.2 响应拦截 记得return
// 添加响应拦截器---无限刷新令牌，无痛刷新，令牌刷新
instance.interceptors.response.use(response => {
	// console.log(response)
	if (response.data.errno == "501") {
		if (Cookies.get('userId')) {
			return login(response)
		} else {
			router.replace('/login')
		}
	}
	return response;
}, function(error) {
	// 对响应错误做点什么
	return Promise.reject(error);
});
// 重新调用函数
async function login(response) {
	//账号
	let name = Cookies.get('userId')
	//密码
	let pass = window.atob(Cookies.get('password'))
	let res = await instance({
		url: "/auth/login",
		method: 'post',
		data: {
			username: name,
			password: pass
		}
	})
	// console.log(res)
	if (res.data.errmsg == '成功') {
		
		console.log(res)
		// let expires = new Date(new Date() * 1 + 10 * 1000); //设置时间 20min
		Cookies.set("token", res.data.data.token)
		response.config.headers['X-Litemall-Admin-Token'] = res.data.data.token
		return await axios(response.config) //重新请求axios
	}
}


// 导出
export default instance
